DOWNLOAD NEW VERSION OF XCL DOCUMENTATIONHere You can download the total set of this documentation files in a single archive XCLdoc.zip

    This page is updated very often, so click 'Reload' button in your browser to get fresh version!

XCL classes

    Here You can see list of available problems to solve named 'tasks'. If problem is solved or it is solving now then  name of member is appearing in right column of table below.  Any case name of task in left column is referred onto more detailed description of this one in separate html (if such description is ready). You may click it to read either project definition or final description if task finished. If You feel that task list not full, feel free to e-mail me about it to suggest new necessary task name and its brief and/or detailed definitions.
    Choose one of not allocated problems to become a member or if You consider that task list is not complete, add your own here. Feel Yourself free to use source of any solved task similar given to get a template to solve any other. If You give task be remember that Your code must satisfy to basic principles of XCL project. E-mail me, if You are ready to vote yourself as XCL developers team member.

Task name

Task description

Status

XClass and XChild

in XClasses.pas

   Similar TComponent in VCL. But it is descending from TObject and differ from this last mainly by ability to have parent XClass object and list of child XClass objects. Parent is responsible for destroying of childs when it is destroyed. finished by Mr.Bonanzas - 16-Jun-99;

improved by GuX, 13-Oct-99 (type LongWord for Delphi3)

XVisual

in XVisuals.pas

   Ancestor of XWindow and XControl. Intended to provide XForm (->XWindow) and XControl with common virtual methods and properties (BoundsRect, ClientRect, Visible, Enabled and so on). finished by Mr.Bonanzas - 16-Jun-99
XWindow

in XWindows.pas

   Similar TWinControl and TForm in VCL. Provides registration of window in Windows environment and basic functionality of it (message handling, creating, destroying). finished by Mr.Bonanzas - 16-Jun-99
XApplet

in XApplets.pas

   Similar TApplication in VCL provides running of applet, interface with main window, loop of messages dispatching. finished by Mr.Bonanzas - 16-Jun-99, modified by C.Kok, 5-Sep-99
XForm

in XForms.pas

   Similar TForm in VCL but without reading itself from executable. Just XWindow with ability to have XControl objects as childs. Responsible for painting, focusing, mouse and keyboard events handling.
   In contrast to VCL TForm, is simplified by avoiding of support of printing form, responding for MDI, scaling, aligning of controls. And at least it can not read itself from executable.
finished by Mr.Bonanzas - 18-Jun-99
XFormAutoSizer

in XFormAutoSize.pas

   Add-on module for autosizing of XForm and its descenders and XControl descenders with child controls. It is adding by calling of UseAutoSizer increasing applet for several Kbytes. finished by Mr.Bonanzas - 19-Jun-99
XAligner

in XAlign.pas

   If used in applet (by calling UseAligns), adds for all XForm(s) and its descenders support of Align property for all its child controls, which are using this one.
   If this add-on is not used, executable become smaller for about 3Kbytes.
finished by Mr.Bonanzas - 19-Jun-99
XResizeAntiFlicker

in XResize.pas

   This add-on when used (by call UseResizeAntiFlicker) eliminates flickering of controls aligned to opposite side to moving with mouse border edge during x-form resizing. There are no similar solutions for VCL, and I think this task can not have solution in Delphi VCL in common case at all. Even in XCL ResizeAntiFlicker works better for forms without MFC-based controls (and in VCL the most of controls are MFC-based).
   When used, increases size of executable by 4Kbytes.
finished by Mr.Bonanzas - 05-Sep-99
XFormsStdMouseEvents

in XMouseEvents.pas

   Add-on for XForm for handling mouse events. It is included into final executable only by calling UseStdMouse adding about 1Kb. finished by Mr.Bonanzas - 02-Jul-99
XFormsStdKeyEvents

in XKeyboardEvents.pas

   Add-on for XForm adding keyboard handling and tabulating between controls. It is added to executable only by calling UseKeyboard increasing size of applet onto about 1,5Kb. finished by Mr.Bonanzas - 02-Jul-99
XControlAutoPlacer

in XControlAutoPlace.pas

   If used, it adds for all XForm(s) support of autoplacing and autoresizing controls when size and / or position of its childs are changed. This allow to adjust size and position of controls and form itself so its never overlaps and form always is shown correctly independently of screen resolution, font sizes and so on. finished by Mr.Bonanzas - 19-Jun-99
XControl

in XForms.pas

   Similar TGraphicControl in VCL. In XCL it is a descendent of XVisual. Created as a child of XForm, which simulates focusing and provides device context for it while painting. finished by Mr.Bonanzas - 18-Jun-99

COMMON UTILITIES

ZList

in XClasses.pas

   Similar TList in Delhi VCL, but more simple (does not not support sorting, has no Move or Swap methods). finished by Mr.Bonanzas - 16-Jun-99
ZTimer, XTimer

in XTimers.pas

   Objects to encapsulate Windows timer. Similar to TTimer in VCL, but ZTimer and XTimer are using applet button window and handles messages directly. ZTimer is derived from TObject so You are responding for its freeing. XTimer can be child of any other XClass (in that case it is destroying when its parent is freeing). finished by Mr.Bonanzas - 02-Jun-99, 27-Jul-99, 08-Sep-99
ZThread

in XThreads.pas

   Similar to TThread in VCL, but easier. by Tim Slusher,
finished Oct-99
XMenu, XPopup

in XMenus.pas

   Similar to TMainMenu and TPopupMenu in VCL. But very simple. These two classes allow to create easy statically designed (as a list of strings) menu with submenus. finished by Mr.Bonanzas - 27-Jul-99
XOpenSaveDialog

in XDialogs.pas

  Open/Save dialog implementation. finished by Carlo Kok - 28-Oct-99
ZStrList, ZStringList, ZStrings

in XStrLists.pas

   Similar to TStringList in VCL. finished by Tim Slusher 28-Sep-99
XWindowUtils.pas    Set of useful windows utility functions. FindWindowByThreadID, GetDesktopRect. finished by Mr.Bonanzas 16-Nov-99
XStrUtils.pas    Set of necessary string utility functions. finished by Mr.Bonanzas
XDateUtils.pas    Set of functions to work with date and time. XDateTime in XCL made slightly another (days are counting from 30-Dec-0001 B.C., not from 30-Dec-1899 A.D. as it is made in VCL). finished by Mr.Bonanzas - 25-Sep-99
XFileUtils.pas    Set of functions to work with files (XFileExists, XFileCreate, XFileSeek functions). by Mr.Bonanzas, improved by Tim Slusher 28-Sep-99
ZFileChange

in XFileChange.pas

   Class (derived from ZThread) to notify about changes in given folder or folders tree. by Tim Slusher 21-Oct-99, finished
XShellLinks.pas    Set of functions to work with Wondows shortcuts (shell links). Now function ResolveLink is ready to use. finished by Mr.Bonanzas - 16-Nov-99
XStreams.pas    ZStream, ZFileStream and ZMemoryStream classes to work with streams. by Tim Slusher 28-Sep-99
function JustOne( Id : String ) : Boolean

in XJustOne.pas

   Very simple JustOne function to allow only one instance of given applet to execute. finished by Mr.Bonanzas - 30-Sep-99
function JustOneNotify(...) : Boolean and JustOneNotifier: ZJustOneNotifier

in XJustOneNotify.pas

   Like above, but allows also get notifications about attempts to run other instances of applet and command line parameters string of correspondent 'execute' command. finished by Mr.Bonanzas - 30-Sep-99
ZTrayIcon

in XTrayIcons.pas

   Allows place icon on tray, remove it, change it or its tooltip text and get mouse messages from it. finished by Mr.Bonanzas - 30-Sep-99

HIGH-LEVEL GRAPHICS SUPPORT

XGraphicObject, XPen, XBrush, XFont, XGraphicsManager

in XGraphics.pas

   Basic graphics objects and other definition. Primarily these are used with XCanvas, but can be used separately. finished by Mr.Bonanzas - 20-Jun-99
XCanvas, XCanvasManager

in XCanvases.pas

   Similar TCanvas in VCL but smaller and more simple. It does not avoid duplicating of resources but it is intended to paint mainly on WM_PAINT message and this ability is not necessary. At least, it is possible to use additional XCanvasObjectsManager to reuse resources at the expense of increasing code. finished by Mr.Bonanzas - 20-Jun-99
XCanvasObjectManager

in XCanvasObjects.pas

   Intended to expand XCanvas with ability to void of duplicating resources and reuse it from heap. If it is not used, executable can be smaller. It is recommended to use it if applet is performing a lot of painting or have big number of controls - to reduce needs in GDI resources. finished by Mr.Bonanzas - 20-Jun-99
XFontRotator

in XRotateFonts.pas

  This add-on is intended to allow painting of rotated text (in XLabel and other controls, using XLabel). Setting property Orientation of XFont object is not sufficient to paint rotated text correctly. FontRotator calculates correct size of area to place rotated text and origin point to pass it to Windows.TextOut function. finished by Mr.Bonanzas - 20-Jun-99, 19-Jul-99
XImageList

in XImgLists.pas

   API ImageList implementation for XCL (similar to TImageList in Delphi, but easier). finished by Mr.Bonanzas - 10-Oct-99
ZPicture

in XImages.pas

  Abstract class to derive different image storages from it (bitmaps, icons and so on). finished by Mr.Bonanzas - 18-Oct-99
ZDDB

in XImages.pas

  First bitmap class to store Device Dependent Bitmaps. More useful than hBitmap handle because can have Canvas and allows painting onto it. It is possible to free canvas at any time without loosing of the image.
  Format of image can not be changed and depends on Windows screen mode.
finished by Mr.Bonanzas - 18-Oct-99
ZHiBmp

in XImages.pas

   Extended DDB. Allows changing of format. Ambigous if You are going to use DIB bitmaps (below). finished by Mr.Bonanzas - 18-Oct-99
ZDIBitmap

in XImages.pas

   Intended to store Device Independent Bitmap. Pixels of DIB can be directly accessed using property ScanLines[] and function GetScanLine (faster).
   ZDIBitmap does not support pf4bit and pf8bit formats, which needs of palette handling.
   ZDIBitmap needs in Canvas only to paint onto its surface. To draw bitmap itself Canvas is not necessary. This last (and other GDI resources)  can be safely free using FreeResources.
finished by Mr.Bonanzas - 18-Oct-99
ZBitmap

in XImages.pas

   Full featured DIB bitmap (supporting all formats and handling palette). As well as ZDIBitmap, can draw itself (onto another DC) without Canvas; and allows accessing of pixels fast with ScanLines[] property or GetScanLine function (even faster) finished by Mr.Bonanzas - 18-Oct-99
ZIcon

in XImages.pas

   Icon incapsulator. Similar to TIcon in VCL. finished by Mr.Bonanzas - 18-Oct-99
ZGifDecoder, ZGif

in XGifs.dcu

  Gif87a and Gif89a implementations for XCL. Calculating exact transparency mask, allow correct showing of any gif clips.
   ZGifDecoder is similar to freeware TGifImage from RxLib, but calculates exact transparency mask for every frame. Just decodes gif into series of bitmaps.
   ZGif provides correct painting of resulting frames of animated gif (it already combined all the frames and it is only need to call its drawing methods to paint given frame). Also ZGif allows to economy resources using its method FreeResources after drawing every frame.
finished by Mr.Bonanzas - 11-Nov-99
SELF-PAINTING CONTROLS

These controls require XCanvas and perform painting and other controlling itself, using only API calls. So, size of applet using such controls, is greater then in case of using MFC-based controls only (see below). But is You want to get some effects (e.g. rotating font in labels) or to replace some standard controls with more efficient, this is your choice. All the more self-painting controls do not require window handle, so needs in user resources can be reduced using these ones.

 

XCustomControl

in XControls.pas

   Prototype of self-painting controls, which use canvas of parent form. finished by Mr.Bonanzas - 22-Jun-99
XLabel

in XControls.pas

   Simple self-painting label similar to TLabel in Delphi (but can not WrapWords and to be transparent). finished by Mr.Bonanzas - 22-Jun-99
XCustomBevel

in XControls.pas

   Prototype of beveled controls (panels, buttons and so on). finished by Mr.Bonanzas - 23-Jun-99
XBevel

in XControls.pas

   Simple panel without caption, beveled as default with raised 3D-frame. finished by Mr.Bonanzas - 23-Jun-99
XPanel

in XControls.pas

   Panel very like to TPanel in Delphi. Uses internally XLabel to draw caption. finished by Mr.Bonanzas - 24-Jun-99
XSplitPanel

in XSplitPanels.pas

  Panel, divided onto several inner panels. This control requires XAligns add-on and necessarily includes this last into executable. Inner panels can be sized with mouse if add-on XSplitSizing is used (call UseSplitSizer).
   Inner panels ( which are derived from XPanel ) can be put vertically or horizontally, from left/top to right/bottom or from right/bottom to left/top (the last of inner panels is client-aligned, so Side property determines which panel will resizing with form - first or last).
finished by Mr.Bonanzas - 31-Jul-99
XStatus

in XSplitPanels.pas

   Status bar similar to VCL TStatusBar but even more power if add-on XSplitSizing is used (in that case inner panels can be sized with mouse). finished by Mr.Bonanzas - 31-Jul-99
XSplitSizer

in XSplitSizing.pas

   Add-on, allowing splitting of XSplitPanel and its descendents (i.e., XStatus). finished by Mr.Bonanzas - 31-Jul-99
XGrep

in XControls.pas

   Special control to draw grep in bottom-right corner of parent control (usually panel, status inner panel or any other XCustomBevel descendant). Also provides response to WM_NCHITTEST message, growing area where cursor becomes NW-SE and sizing of form is possible. finished by Mr.Bonanzas 31-Jul-99
XGroup

in XControls.pas

   Similar TGroupBox in Delphi. Can have title on any part of border. finished by Mr.Bonanzas - 25-Jun-99
XPaint

in XControls.pas

   Simple self-painting control with OnPaint message (similar to TPaint in Delphi VCL). finished by Mr.Bonanzas - 25-Jun-99
XCustomCheckBox

in XControls.pas

   Prototype for checkboxes and radioboxes. finished by Mr.Bonanzas - 26-Jun-99
XCheckBox

in XControls.pas

   Simple checkbox without caption. finished by Mr.Bonanzas - 26-Jun-99
XRadioBox

in XControls.pas

   Simple radiobox without caption. finished by Mr.Bonanzas - 27-Jun-99
XCustomCheck

in XControls.pas

   Prototype for XCheck and XRadio (look below). finished by Mr.Bonanzas - 27-Jun-99
XCheck

in XControls.pas

   Checkbox with caption similar to VCL TCheckBox. finished by Mr.Bonanzas - 27-Jun-99
XRadio

in XControls.pas

   RadioBox with caption similar to VCL TRadioBox. finished by Mr.Bonanzas - 28-Jun-99
XCustomButton

in XControls.pas

   Simple button without caption or picture. It is intended mainly as prototype of button but therefore can be used itself. finished by Mr.Bonanzas - 29-Jun-99
XButton

in XControls.pas

   Simple button with caption. Can be fixed, focusable or speed button, autosizable, aligned, ... finished by Mr.Bonanzas - 30-Jun-99
XDropButton

in XControls.pas

  Simple button to represent drop (up, down, right, left) triangle arrow. finished by Mr.Bonanzas - 01-Aug-99
XImgButton

in XImgButtons.pas

   Button with image and caption (similar to TBitBtn component in VCL). Uses image from XImageList. finished by Mr.Bonanzas - 10-Oct-99
XScroller

in XControls.pas

   Similar to TScrollbar in VCL and even more power. finished by Mr.Bonanzas - 28-Aug-99
XScrollBar

in XControls.pas

   Similar XScroller, but more specialized to work in pare with another scrollbar on the same parent control. finished by Mr.Bonanzas - 28-Aug-99
XScrollBox

in XControls.pas

   Similar TScrollBox in VCL. It allows place into and scroll other controls. finished by Mr.Bonanzas - 30-Aug-99
XEdit

in XEdits.pas

   Similar TEdit in VCL. finished by Mr.Bonanzas - 08-Sep-99
XCaretShower

in XCarets.pas

   Add-on providing the painting of blinking caret in edit controls which are derived from XCustomControl (like XEdit) and has no window handle. It does not use Windows' caret APIs, instead it paints caret itself what requires about 1Kbytes of code, but is looking more correctly when controls are overlapped and requires nothing when not used.
   Activated by call UseCaret( True ). Can be deactivated at run time.
finished by Mr.Bonanzas - 08-Sep-99
XEditMouseSelect

in XEditMouseSel.pas

   Add-on to provide selecting of portions of text in XEdit control with mouse and to scroll its content with mouse. finished by Mr.Bonanzas - 08-Sep-99
XEditClipboard

in XEditClipbrd.pas

   Add-on to provide copying/cutting selected part of XEdit text to clipboard and pasting from clipboard to XEdit. finished by Mr.Bonanzas - 08-Sep-99
XEditUndo

in XEditUndoExt.pas

   Add-on to provide undo/redo operations for XEdit on pressing CTRL-Z, CTRL-SHIFT-Z or by calling appropriate methods. finished by Mr.Bonanzas - 10-Sep-99
XCustomGrid

in XGrids.pas

   Similar to TCustomGrid in VCL but lighter. finished by Mr.Bonanzas - 12-Sep-99
XGrid

in XGrids.pas

   Similar to TDrawGrid in VCL but lighter (no fixed rows and columns). finished by Mr.Bonanzas - 12-Sep-99
XListView

in XLists.pas

   Similar to TListBox in VCL (without editing). finished by Mr.Bonanzas - 14-Sep-99
XListMouseSelect

in XListMouseSel.pas

   Add-on which allows mouse positioning, selecting and scrolling for XListView. finished by Mr.Bonanzas - 14-Sep-99
XListKeySelect

in XListKeySel.pas

   Add-on which will allow positioning, selecting and scrolling of lines in XListView with keyboard. finished by Mr.Bonanzas - 15-Sep-99
XListEdit

in XListEditExt.pas

   Add-on to provide editing lines of XListView using temporarily created XEdit control. finished by Mr.Bonanzas - 16-Sep-99
XNotebook

in XControls.pas

   Similar to TNotebook in VCL. Allows to place children controls on several Pages[], only one of which last (ActivePage) is visible at the time. finished by Mr.Bonanzas - 20-Sep-99
XTabs

in XControls.pas

   It seems to be like as TTabControl but slightly different in appearance and behaviour, especially in case than a lot tabs are needed to be shown. I think, my solve of this task more complient then in VCL. finished by Mr.Bonanzas - 20-Sep-99
XTabbedNotebook

in XControls.pas

   It is the union of XTabs and XNotebook, where XTabs is controlling ActivePage of Notebook and can be placed at one of four sides of the last. finished by Mr.Bonanzas - 20-Sep-99
XCalendar

in XCalendars.pas

   Similar TCalendar in VCL. Can be horizontal or vertical - oriented, first day of week can be changed from Sunday to other (e.g., Monday), and some other features make it even more power (then TCalendar). finished by Mr.Bonanzas - 26-Sep-99
XGauge

in XControls.pas

   Similar TGauge. finished by Mr.Bonanzas - ??-Sep-99
XHysto

in XHystogramms.pas

   XHysto sample

Allows to store and graphically represent mesure values. Has very big set of adjustments.

finished by Mr.Bonanzas - 24-Nov-99

MFC-BASED CONTROLS

   These controls are very important, because it is very easy to create it just constructing interface with existing (globally in Windows) control classes. These classes are located in standard DLL's, which are supplied by Windows itself. And these are painting and controlling itself, so code of Mfc-based controls is very small, and applet can use large set of those without great growing of size of executable.
   Some disadvantages of Mfc-based controls are: necessity of window handle for every Mfc-control, flickering (this can be eliminated using special add-ons), inefficient of some Mfc-controls in handling of large data volumes - treeview, listbox and so on.
   At the same time, creating of Mfc-based controls is essentially easy task than designing of self-painted controls above. Just look at its similar one in VCL, definition of it in Win32.hlp and create the same for XCL, using existing Mfc-based controls as  prototype how to do it.

  I held up working under MFC-controls and stop it temporarily, waiting for volunteers, who could find this job acceptable. And my believes was happy when Tim Slusher decided to start working with it. Let us say GREAT THANKS to Tim. But do not wait, do not be lazy - join to project and take part in growing of XCL! Just look at XMFCControls.pas and learn how to create another mfc-controls. And You will be first who get benefits from this work. Unfortunately I have no time now to create full-scale documentation on MFC-controls. Be patient, I will try to make it as soon as possible. At least, You always can read source.

 

XMfcControl

in XMfcControls.pas

   The prototype for all Mfc-based controls below. Derive new Mfc-based controls from it. finished by Mr.Bonanzas - 19-Jul-99
XWCustomStatic

in XMfcControls.pas

   The implementation of 'STATIC' control. Needs in further detailization. Potentially can be ancestor of static text label, static bitmap/icon image or event play role of panel with bevels. finished by Mr.Bonanzas - 19-Jul-99
CLabel

in XMfcControls.pas

   Derived from XWCustomStatic, is presenting natural Windows label (similar TStaticText in Delphi VCL). If You plan change it often, use anti-flickering add-on below. finished by Mr.Bonanzas - 19-Jul-99
XWCustomPaint

in XMfcControls.pas

   Prototype of owner-painting controls. Implemented next after XWlabel to derive XMfcCover (local in XMfcAntiFlick.pas). This last was required to cover XWLabel temporarily and prevent flicks in WM_SETTEXT message. finished by Mr.Bonanzas - 19-Jul-99
CPaint

in XMfcControls.pas

  Derived from XWCustomPaint. Similar to TPaintBox in VCL. finished by Mr.Bonanzas - 19-Jul-99
XMfcAntiFlicker

in XMfcAntiFlick.pas

   Add-on to avoid flicks in Mfc-based controls: (1st) by painting through memory bitmap buffer; (2nd) by preventing changing of caption during assignment new one.
   Just call procedure UseMfcAntiFlicker before creating the first form in dpr-file (as well as for other add-ons). Size of code added there is about 2 Kbytes.
finished by Mr.Bonanzas - 19-Jul-99
CButton

in XMFCControls.pas

   Standard Windows button. by Tim Slusher (& Vladimir Kladov), finished 27-Oct-99
CEdit    Standard Windows edit control. by Tim Slusher finished 5-Nov-99
CMemo    Similar to TMemo in VCL. by Tim Slusher finished 5-Nov-99

XCL TOOLS

   This part contains definition of possible external tools which (could be) made using standard VCL. Such utility applications could be used to simplify programming in XCL which is not now "visual" process and seems to be harder then working in IDE. As it is said in introduction, we have to refuse from such IDE beauties as visual form designing using Components Palette and Object Inspector. But this does not mean that it is impossible to create wizard, which could play role of these great tools. Such wizard could allow to design XCL forms and adjust its controls properties and events making XCL-plogramming visual and convenient again.

XCL Wizard    Tool, which allow to preview XCL form, drop controls onto it, inspect and change its properties and events similar to how IDE shell does for standard VCL form.
   Designer takes definitions of controls from its source (may be, taking some of those from comments). In result designer has to generate source for dpr-file and project units.
   It would be pleasure if the Designer could work interactively generating source code immediately in correspondance with performed commands similar that IDE does.

???

XCL Help

This set of documents can be used as help. Well, but creating of help in hlp-format could be very useful to get context help when coding under XCL. If anybody has sufficient experience in creating such format of help and installing it into IDE help, I would be appritiate to accept your assistance.

XCL.hlp    Translation of this documents set into standard Windows .hlp-file (or set of such files).
   It is desirable to provide files, needed to traslate its into "hlp" using hhw.exe, because documentation about XCL is always under construction.

???

Here You can see part of hierarchy tree of ready to use XCL controls.


DOWNLOAD NEW VERSION OF XCL DOCUMENTATIONHere You can download the total set of this documentation files in a single archive XCLdoc.zip     Idea of XCL Copyright (C) Kladov Vladimir, 1999